package com.saascloud.core;

import java.io.File;
import java.io.InputStream;
import java.util.List;

/**
 * @Author: lidingyi
 * @Contact: one_dream@aliyun.com
 * @Date: 2022/5/20 10:53
 * @Version: 1.0
 * @Description:
 */
public interface FileTemplate {

    /**
     * 上传对象到obs
     *
     * @param objectName,objectName建议用/分割保持层级关系
     * @param inputStream
     */
    ObsUploadResp upload(String objectName, InputStream inputStream);

    /**
     * 上传对象到obs
     *
     * @param bucketName
     * @param objectName
     * @param inputStream
     */
    ObsUploadResp upload(String bucketName, String objectName, InputStream inputStream);

    /**
     * 上传对象到obs
     *
     * @param objectName
     * @param file
     */
    ObsUploadResp upload(String objectName, File file);

    /**
     * 上传对象到obs
     *
     * @param bucketName
     * @param objectName
     * @param file
     */
    ObsUploadResp upload(String bucketName, String objectName, File file);

    /**
     * 下载对象
     *
     * @param bucketName
     * @param objectName
     * @return
     */
    ObsGetResp getObject(String bucketName, String objectName);

    /**
     *
     * @param objectName
     * @return
     */
    ObsGetResp getObject(String objectName);

    /**
     * 列举对象
     * @param bucketName
     * @param prefix
     * @return
     */
    List<ObsListItemResp> listObjectsByPrefix(String bucketName, String prefix);

    /**
     * 列举对象
     * @param prefix
     * @return
     */
    List<ObsListItemResp> listObjectsByPrefix(String prefix);

}
